<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
        <title>AJ MCP SDK/MCP Server SDK 资源内容</title>
        <meta name="description" content="轻量级的 Java 8 Model Context Protocol (MCP) SDK. MCP Server SDK 资源内容"/>
        <meta name="keywords" content="mcp, mcp sdk, java mcp, mcp client, mcp server, java8 mcp, 资源内容"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <link rel="stylesheet" href="/asset/style/main.css"/>
        <link rel="icon" type="image/png" href="/asset/favicon.ico"/>
        <script src="/asset/common.js"></script>
    </head>
    <body>
        <nav>
            <div>
                <div class="links">
                    <a href="/">🏠 首页</a>
                    | ⚙️ 源码:
                    <a target="_blank" href="https://github.com/lightweight-component/aj-mcp">Github</a>/<a target="_blank" href="https://gitcode.com/lightweight-component/aj-mcp">Gitcode</a>
                    |
                    <a href="/">英文版本</a>
                </div>
                <h1>AJ MCP SDK</h1>
                <h3>用户手册</h3>
            </div>
        </nav>
        <div>
            <menu>
                
                <ul>
                    <li class="selected">
                        <a href="/cn">首页</a>
                    </li>
                    <li>
                        <a href="/architecture/index-cn">架构原理</a>
                    </li>
                </ul>
                <h3>MCP 客户端 SDK</h3>
                <ul>
                    <li>
                        <a href="/client/setup-client-cn">安装与配置</a>
                    </li>
                    <li>
                       <a href="/client/initialization-cn">初始化</a>
                    </li>
                    <li>
                       <a href="/client/resource-cn">Resources 用法</a>
                    </li>
                     <li>
                       <a href="/client/prompt-cn">Prompts 用法</a>
                    </li>
                     <li>
                       <a href="/client/tool-cn">Tools 用法</a>
                    </li>
                </ul>
                <h3>MCP 服务端 SDK</h3>
                <ul>
                      <li>
                           <a href="/server/usage-server-cn">Server SDK 用法指南</a>
                      </li>
                      <li>
                           <a href="/server/res-server-cn">Resources 用法</a>
                      </li>
                      <li>
                           <a href="/server/pro-server-cn">Prompts 用法</a>
                      </li>
                      <li>
                             <a href="/server/tool-server-cn">Tools 用法</a>
                       </li>
                      <li>
                         <a href="/server/sample-cn">整合例子</a>
                      </li>
                </ul>

                <h3>其他</h3>
                <ul>
                    <li><a href="/misc/versions">版本记录</a></li>
                    <li><a href="/misc/contact-cn">联系方式</a></li>
                </ul>
            </menu>
            <article>
                <h1>MCP 服务器 SDK 功能管理</h1>
<p>AJ-MCP 注解体系为将 Java 方法声明式地暴露为 MCP（模型上下文协议，Model Context Protocol）工具、资源和提示提供了便捷方式。该体系通过 Java 注解自动发现和注册功能，无需手动配置或注册代码。</p>
<h2>资源开发</h2>
<p>资源通过在 <code>@McpService</code> 类中的方法上添加 <code>@Resource</code> 注解进行暴露。注解体系会在服务器初始化时自动发现和注册这些资源。</p>
<p><code>@Resource</code> 注解将方法暴露为 MCP 资源，具有以下属性：</p>
<table>
<thead>
<tr>
<th>属性</th>
<th>是否必需</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>uri</td>
<td>是</td>
<td>资源的唯一标识符</td>
</tr>
<tr>
<td>description</td>
<td>否</td>
<td>人类可读的描述</td>
</tr>
<tr>
<td>mimeType</td>
<td>否</td>
<td>资源内容的 MIME 类型</td>
</tr>
<tr>
<td>value</td>
<td>否</td>
<td>人类可读的名称（默认为空）</td>
</tr>
</tbody>
</table>
<h3>资源内容类型</h3>
<h4>文本资源</h4>
<p>文本资源返回包含纯文本或结构化文本数据的 <code>ResourceContentText</code> 对象。</p>
<pre><code class="language-java">@Resource(uri = &quot;file:///text&quot;, description = &quot;一段优美的文本&quot;, mimeType = &quot;text/plain&quot;)
public ResourceContentText text(){
    ResourceContentText content = new ResourceContentText();
    content.setUri(&quot;file:///text&quot;);
    content.setMimeType(&quot;text/plain&quot;);
    content.setText(&quot;text888&quot;);
    return content;
}
</code></pre>
<h4>二进制资源</h4>
<p>二进制资源返回包含 Base64 编码二进制数据的 <code>ResourceContentBinary</code> 对象。</p>
<pre><code class="language-java">@Resource(uri = &quot;file:///blob&quot;, description = &quot;一张图片&quot;, mimeType = &quot;image/jpg&quot;)
public ResourceContentBinary blob(){
    String base64EncodedImage = ServerUtils.encodeImageToBase64(&quot;bird-eye.jpg&quot;);

    ResourceContentBinary content = new ResourceContentBinary();
    content.setUri(&quot;file:///blob&quot;);
    content.setMimeType(&quot;image/jpg&quot;);
    content.setBlob(base64EncodedImage);

    return content;
}
</code></pre>
<h3>资源模板</h3>
<p><code>@ResourceTemplate</code> 注解支持动态资源，采用符合 RFC 6570 URI 模板语法的参数化 URI。</p>
<table>
<thead>
<tr>
<th>属性</th>
<th>是否必需</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>uriTemplate</td>
<td>是</td>
<td>RFC 6570 Level 1 URI 模板</td>
</tr>
<tr>
<td>name</td>
<td>否</td>
<td>人类可读的名称</td>
</tr>
<tr>
<td>description</td>
<td>否</td>
<td>模板描述</td>
</tr>
<tr>
<td>mimeType</td>
<td>否</td>
<td>内容的 MIME 类型</td>
</tr>
</tbody>
</table>
<p>模板方法可以接受与 URI 模板变量对应的参数。</p>

                <div id="comment-holder">
                </div>
            </article>
        </div>
        <footer>
             AJ-Util，开源框架 <a href="https://framework.ajaxjs.com" target="_blank">AJ-Framework</a> 的一部分。联系方式：
             frank@ajaxjs.com，<a href="https://blog.csdn.net/zhangxin09" target="_blank">作者博客</a>
             <br />
             <br />
             Copyright © 2025 Frank Cheung. All rights reserved.
         </footer>
    </body>
</html>